--[[
描述 ： MLListCellImageView控件
作者 ： 金偉光
时间 ： 15/03/13
]]

MLListCellImageView = Class(MLView,'MLListCellImageView');

MLListCellImageView.tag     	  = nil;     -- 唯一标识
MLListCellImageView.viewCtrl  = nil;     -- 所属viewCtrl
MLListCellImageView.image     = nil;     -- 图片路径
	
MLListCellImageView.mWidth    = nil;     -- 宽度
MLListCellImageView.mHeight   = nil;     -- 高度

--[[
功能   ： 初始化 UIImageView 控件
参数   ： w       --  宽度
         h       --  高度
         image   --  图片路径
         viewCtrl ---  所属viewCtrl
返回   ： UIImageView 实例
]]
function MLListCellImageView:init(viewCtrl,imageTemplate,image,id)
    width  = imageTemplate.width or UITheme.IMAGEVIEW_WIDTH;
	height = imageTemplate.height or UITheme.IMAGEVIEW_HEIGHT;

	self:initView(width, height, viewCtrl, id);
	qtEvent[self.mHashcode] = self;
	self.tag = imageTemplate.tag;
	self.mWidth = width;
	self.mHeight = height;	
	self.image = image or UIImage.imageName(UITheme.IMAGEVIEW_DEFAULT) ;
	self.isStretch = true;
	self:draw();
	return self;
end

--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function MLListCellImageView:draw()
	local iw, ih;
	local g = self:getGraphic();
    g:clear();
	local image = self.image;
	if image then iw, ih = image:getWH(); end
	if iw == nil or ih == nil then return; end
	if self.isStretch == true then
		if image then
			g:drawImage(image, 0, 0, self.mWidth, self.mHeight);
		end
	else
		local x = 0;
		local y = 0;
        -- 按比例缩放
		if iw > self.mWidth or ih > self.mHeight then
			local bl;
			local spw =  self.mWidth/iw;
			local sph =  self.mHeight/ih;
			if spw > sph then bl = sph  else bl = spw;
			end
            iw = iw*bl;
            ih = ih*bl;
		end

		if iw < self.mWidth then
			x =  (self.mWidth - iw) /2;
		end
		if ih < self.mHeight then
			y =  (self.mHeight - ih) /2;
		end
		g:drawImage(image, x, y, iw, ih);
	end
end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function MLListCellImageView:show()
	self:draw();
end
--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function MLListCellImageView:update()
   self:show();
end

--[[
功能：  触摸笔事件监听函数
参数：  eventType	事件类型
参数：  x	 x 坐标
参数：  y	y 坐标
返回：  是否拦截此事件 true：拦截 false：不拦截
注解：  上层可重写此方法，来监听此事件
用法：   if eventType == View.PointDown then .... end
]]
function qt_event_point(hashcode, evt, x,y)	

	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onPoint ~=nil then
			return qtEvent[hashcode].onPoint(evt,x,y);
			else
				if qtEvent[hashcode].onClick ~=nil then
			 	return true;
			 else
				return false;
			 end
		end
	end
end

--[[
功能：  触摸笔点击事件监听函数
参数：	无	
返回：  无
注解：	层可重写此函数，来监听此事件
]] 
function qt_event_click(hashcode)
	--return 1;
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onClick ~=nil then
		   qtEvent[hashcode].onClick();
		end
	end
end
